#ifndef accountmanager_utils_address_h
#define accountmanager_utils_address_h

#include <utils/utils_decl.h>

#include <utils/core/string.h>

namespace AccountManagerUtils {
	
//! Information about an address
/*!
 *  An address holds information about the street, unit name, city, zip code, state and country.
 */
class _accountmanager_utils_decl Address {

public:
	Address();
	Address(const Address& rhs);
	Address(const String& street, const String& city);
	Address(const String& street, const String& city, const String& zip_code);
	Address(const String& street, const String& city, const String& zip_code, const String& country);
	Address(const String& street, const String& city, const String& zip_code, const String& state, const String& country);
	~Address();
	Address& operator=(const Address& rhs);
	
	String& street_name();
	const String& street_name() const;
	String& unit_name();
	const String& unit_name() const;
	String& city_name();
	const String& city_name() const;
	String& zip_code();
	const String& zip_code() const;
	String& state();
	const String& state() const;
	String& country();
	const String& country() const;

private:
	String street_name_;
	String unit_name_;
	String city_name_;
	String zip_code_;
	String state_;
	String country_;
};

} // namespace AccountManagerUtils

#endif
